package com.sourcetrip.arraylist;

import java.util.ArrayList;
import java.util.Iterator;

/**
 * @author: ZhouBert
 * @date: 2020/11/16
 * @description:	关于随机访问接口的有意思的测试！
 * 对于 ArrayList 的
 * 【随机访问】
 * 【顺序访问】
 *
 * 当实现了 RandomAccess 接口之后，效率才会比 Iterator 高
 */
public class RandomAccessTest01 {

	/**
	 * RandomAccess cost: 5
	 * Iterator cost: 7
	 *
	 * RandomAccess - get(index) 要比 iterator 快一些！
	 * @param args
	 */
	public static void main(String[] args) {
		ArrayList<Integer> list = new ArrayList<>();
		//添加 100W 数据，验证速度
		for (int i = 0; i < 1000000; i++) {
			list.add(i);
		}

		//开始随机访问 list.get(i)
		long begin = System.currentTimeMillis();
		for (int i = 0; i < list.size(); i++) {
			list.get(i);
		}
		System.out.println("RandomAccess cost: " + (System.currentTimeMillis()-begin));


		//开始顺序访问
		begin = System.currentTimeMillis();
		Iterator<Integer> iterator = list.iterator();
		while (iterator.hasNext()){
			iterator.next();
		}
		System.out.println("Iterator cost: " + (System.currentTimeMillis()-begin));
	}
}
